package com.molichuxing.services.business.dto.response;

import com.molichuxing.framework.bean.RootBean;
import com.molichuxing.framework.dto.ResponseRootDto;
import com.molichuxing.services.property.CarAccidentLiabilityTypeEnum;
import com.molichuxing.services.property.CarAccidentStatusEnum;
import com.molichuxing.services.property.CarAccidentTypeEnum;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * <p>
 * 事故信息实体
 * </p>
 *
 * @author xuelin yi
 * @since 2019-09-04
 */
@Data
public class AccidentBizDto extends ResponseRootDto {

    /**
     * 事故主键
     */
    private Integer accidentId;

    /**
     * 订单编号
     */
    private Long orderCode;

    /**
     * 事故编号
     */
    private String code;

    /**
     * 车架号
     */
    private String vin;

    /**
     *  车牌号
     */
    private String licencePlate;

    /**
     *  车型ID
     */
    private String vehicleId;

    /**
     * 用户ID
     */
    private Integer userId;

    /**
     * 是否有人伤（0：无人伤，1：有人伤）
     */
    private Boolean isCasualty;

    /**
     * 是否有人伤（0：无人伤，1：有人伤）
     */
    private String isCasualtyStr;


    /**
     * 事故类型（1:单方事故，2：双方事故，3：多方事故，4：停放受损，5：车辆盗抢，6：车辆自燃，7：车辆涉水，8：重大自然灾害）
     */
    private Integer accidentType;

    /**
     * 事故类型（1:单方事故，2：双方事故，3：多方事故，4：停放受损，5：车辆盗抢，6：车辆自燃，7：车辆涉水，8：重大自然灾害）
     */
    private String accidentTypeStr;

    /**
     * 责任类型（0：无责，1：全责，2：主责，3：同责，4：次责）
     */
    private Integer liabilityType;

    /**
     * 责任类型（0：无责，1：全责，2：主责，3：同责，4：次责）
     */
    private String liabilityTypeStr;

    /**
     * 出险时间
     */
    private LocalDateTime accidentTime;


    /**
     * 出险地点-区id
     */
    private Integer regionId;

    /**
     * 出险地点-详细地址
     */
    private String accidentAddr;

    /**
     * 交强险报案号
     */
    private String compulsoryCode;

    /**
     * 商业险报案号
     */
    private String commercialCode;

    /**
     * 事故说明
     */
    private String explain;

    /**
     * 审核账号id
     */
    private Integer accountId;

    /**
     * 审核用户账号
     */
    private String accountAccount;

    /**
     * 事故时间
     */
    private LocalDateTime reportTime;

    /**
     * 事故备注
     */
    private String remark;

    /**
     * 事故状态（1：事故未确认，2：事故已确认，3：结案未确认，4：已结案，5：无效报备）
     */
    private Integer status;

    /**
     * 事故状态（1：事故未确认，2：事故已确认，3：结案未确认，4：已结案，5：无效报备）
     */
    private String statusStr;


    /**
     * 乐观锁标识
     */
    private Integer version;

    /**
     * 结案时间
     */
    private LocalDateTime settleTime;

    /**
     * 确认结案时间
     */
    private LocalDateTime commitSettleTime;

    public void setIsCasualty(Boolean casualty) {
        this.isCasualty = casualty;
        if(casualty) {
            this.isCasualtyStr = "有";
        }else{
            this.isCasualtyStr = "无";
        }

    }

    public void setAccidentType(Integer accidentType) {
        this.accidentType = accidentType;
        if(null != accidentType) {
            this.accidentTypeStr = CarAccidentTypeEnum.getName(accidentType);
        }
    }

    public void setLiabilityType(Integer liabilityType) {
        this.liabilityType = liabilityType;
        if(null != liabilityType) {
            this.liabilityTypeStr = CarAccidentLiabilityTypeEnum.getName(liabilityType);
        }
    }

    public void setStatus(Integer status) {
        this.status = status;
        if(null != liabilityType) {
            this.statusStr = CarAccidentStatusEnum.getName(status);
        }
    }
}
